<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>async,await语法糖的使用</title>
</head>
<body>
    
</body>
<script>
    /*
        promise的出现是为了解决回调地狱  但是其实它也是回调函数的方式在使用
            所以为了简化操作  promise又有了新的语法糖async 和 await
            async就是相当于 new了一个Promise的感觉
            await就是为了简化then() 和里面的回调函数
    */
    async function get(){}
    console.log(get())   // 这时候返回的是一个resolve状态的promise  所以也就是说 使用了async就默认已经是成功状态的promise了
    
    // 使用async await语法糖
    async function getall(){
        let name = await 'Jimmy'
        console.log(name)
    }
    getall()
    // 不适用async await语法糖  可以看到 使用语法塘课以节省掉很多行的代码，并且我们呢以可以不写回调函数了
    function get(){
        return new Promise(resolve=>{
            resolve('Jimmy')
        })
    }
    get().then(res=>{
        console.log(res)
    })

    // 使用语法糖完成链式操作
    async function linner(){
        // 是await代替的是then返回的值  所以我们呢可以定义一个变量去接收await返回的值
        let names =  await new Promise(resolve=>{
            setTimeout(() => {
                resolve('jimmmy')
            }, 2000);
        })
        console.log(names+'oo')
        let site = await new Promise(resolve=>{
            resolve('jimmy.com')
        })
        console.log(site)
    }
    
    linner()
</script>
</html>